

from fastapi import Depends, Query
from core.dependencies import Paging, QueryParams

class RoleParams(QueryParams):
    """
    角色查询参数类，用于处理角色列表查询时的过滤条件和分页参数
    
    继承自 QueryParams 基类，添加了角色特有的查询字段
    
    参数说明：
    - name: 角色名称模糊查询
    - role_key: 权限字符模糊查询
    - disable: 角色禁用状态过滤
    - params: 分页参数依赖注入
    通过 params 依赖注入获取，包含 page 和 page_size 等信息，父类会处理为 skip 和 limit
    """

    def __init__(self, name: str|None = Query(None, title="角色名称", description="支持模糊查询的角色名称"), 
                 role_key: str|None = Query(None, title="权限字符", description="支持模糊查询的权限标识符"),
                 disable: bool|None = Query(None, title="是否禁用", description="根据角色禁用状态过滤，True表示已禁用，False表示未禁用"),
                 params: Paging = Depends()):
        super().__init__(params)

        # 将角色名称转换为模糊查询条件
        # 格式为 ("like", value)，表示在SQL查询中使用 LIKE 语句
        self.name = ("like", name)
        # 将权限字符转换为模糊查询条件
        self.role_key = ("like", role_key)
        # 禁用状态直接作为查询条件（等值查询）
        self.disabled = disable